package com.tiger.project.mapper;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

import com.tiger.project.domain.ContractBill;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Component;


/**
 * 【合同账单】Mapper接口
 *
 * @author standard
 * @date 2022-09-26
 */
@Component
public interface ContractBillMapper {
    /**
     * 查询【合同账单】
     *
     * @param id 【合同账单】主键
     * @return 【合同账单】
     */
    public ContractBill selectContractBillById(Long id);

    /**
     * 审批通过的账期
     */
    public ContractBill selectContractBillByIdAndState(Long id);

    /**
     * 查询【合同账单】列表
     *
     * @param contractBill 【合同账单】
     * @return 【合同账单】集合
     */
    public List<ContractBill> selectContractBillList(ContractBill contractBill);

    /**
     * 新增【合同账单】
     *
     * @param contractBill 【合同账单】
     * @return 结果
     */
    public int insertContractBill(ContractBill contractBill);

    /**
     * 修改【合同账单】
     *
     * @param contractBill 【合同账单】
     * @return 结果
     */
    public int updateContractBill(ContractBill contractBill);

    /**
     * 删除【合同账单】
     *
     * @param id 【合同账单】主键
     * @return 结果
     */
    public int deleteContractBillById(Long id);

    public int deleteContractBillByContract(Long id);

    public int deleteContractBillByContractId(@Param("id") Long id,@Param("period") Long period);
    /**
     * 批量删除【合同账单】
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteContractBillByIds(Long[] ids);

    //获取当前期数
    public ContractBill selectContractBillPeriod(Long id);


    /**
     * 收款预警列表/开票申请
     */
    public List<ContractBill> payeeEarlyList(ContractBill contractBill);

    /**
     * 开票信息
     */
    public ContractBill makeInvoice(@Param("contractSponsorId") Long contractSponsorId,@Param("rentPeriods") Long rentPeriods);

    /**
     * 租金减免审批通过之后，累计账期减免金额
     */
    public int addCreditAmount(@Param("id")Long id, @Param("creditAmount")BigDecimal creditAmount);

    /**
     * 删除租金到账
     */
    public int deleteRecord(Long id);

    /**
     * 删除租金进账
     */
    public int deleteArrival(Long id);

    /**
     * 租金分配列表每期已缴清只展示最后一期
     */
    public ContractBill selectLast(Long id);


    /**
     * 删除开票信息，把该条开票信息置空
     */
    public int deleteInvoice(Long id);

    public List<Map<String,Object>> selectPatrolTermMap(@Param("id") Long id, @Param("companyId")Long companyId);

}
